/*
 * Copyright (c) 2021，上海福宇龙汽车科技有限公司
 * All rights reserved.
 * 文件名称: key.h
 * 摘要:
 * 当前版本: V1.0.0 周伟
 * Date: 2024-03-12
 * 历史版本: Vx.x.x，编写者/修改者，修改时间，修改内容（重大发布时，总结重点变更内容）
 */
#ifndef _KEY_H
#define _KEY_H

#include <stdio.h>  
#include <stdbool.h>  
#include <stdint.h>
#include "rte.h"
// 定义消抖定时器的时间间隔（根据实际情况调整）
#define DEBOUNCE_TIME_MS 50
#define KEY_EOL_DLY (3000U)
typedef struct 
{
    Curr_produ c_pr;    /*当前产品标志*/
    Test_status t_st;   /*当前测试状态是否在某个产品测试中*/
    bool start_keyStableState; /*启动按键稳定状态标志*/
    bool eol_keyStableState; /*启动按键稳定状态标志*/
    bool reset_keyStableState; /*复位按键稳定状态标志*/
    bool Overcurrent_detected_flag;/*是否已经进行过流保护检测*/
}Test_cases;/*测试情况结构体*/

/*
 * 函数介绍: Test_cases初始化
 * 参数:
 * 返回值: {*}
 * 备注:
 */
void key_init(void);

/*
 * 函数介绍: 返回当前测试状态
 * 参数:
 * 返回值: {*}
 * 备注:
 */
Test_status rt_test_status(void);

/*
 * 函数介绍: 返回当前是哪个产品
 * 参数:
 * 返回值: {*}
 * 备注:
 */
Curr_produ rt_Curr_produ(void);

/*
 * 函数介绍: 工装程序选择按键检测
 * 参数:
 * 返回值: {*}
 * 备注:
 */
void Tool_program_button_detection(void);


/*
 * 函数介绍: 启动测试按键检测
 * 参数:
 * 返回值: {*}
 * 备注:
 */
void Start_button_detection(void);


/*
 * 函数介绍: 手动复位按键检测
 * 参数:
 * 返回值: {*}
 * 备注:
 */
void Manual_reset_detection(void);

/*
 * 函数介绍: 过流保护
 * 参数:
 * 返回值: {*}
 * 备注:
 */
Rt_result Overcurrent_protection_checking(void);

#endif


